package com.sugon.entity.dto;

import cn.hutool.core.util.EnumUtil;
import cn.hutool.core.util.StrUtil;
import com.sugon.modules.device.consts.DeviceTicketSource;
import com.sugon.modules.device.consts.enums.DevRepairTicketStatusEnum;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 设备维修工单导出参数
 *
 * @Author YuXD
 * @Version 1.0
 * @since 2022/12/9
 */
@Data
public class DevRepairTicketExportParam implements Serializable {

    private String id;

    /**
     * 设备编码
     */
    private String devCode;

    /**
     * 设备名称
     */
    private String devName;

    /**
     * 车间
     */
    private String devFarmName;

    /**
     * 生产线名称
     */
    private String devProductName;

    /**
     * 工序名称
     */
    private String devProceName;

    /**
     * 报修人
     */
    private String uploader;

    /**
     * 维修人员
     */
    private String repairUser;

    /**
     * 维修人员
     */
    private String uploadName;

    /**
     * 报修时间
     */
    private Date uploadDate;

    /**
     * 开始维修时间
     */
    private Date repairStartDate;

    /**
     * 结束维修时间
     */
    private Date repairEndDate;

    /**
     * 维修时长
     */
    private Long repairDuration;

    /**
     * 故障时长，优先为故障时长，其次为维修时长
     */
    private Long duration;

    /**
     * 故障描述
     */
    private String faultCon;

    /**
     * VFG名称
     */
    private String vfgName;

    /**
     * 报警/故障类型
     */
    private String alarmType;

    /**
     * 报警代码
     */
    private String alarmCode;

    /**
     * 维修单号
     */
    private String repairCode;

    public String getSource() {
        if (StrUtil.isEmpty(this.source)) {
            return "";
        }
        return EnumUtil.fromString(DeviceTicketSource.class, this.source).getName();
    }

    /**
     * 来源
     */
    private String source;

    /**
     * 工单状态
     */
    private Integer devStatus;

    public String getDevStatus() {
        Map<Integer, DevRepairTicketStatusEnum> map = DevRepairTicketStatusEnum.map();
        if (devStatus == null || !map.containsKey(devStatus)) {
            return "";
        }
        return map.get(devStatus).getDesc();
    }

    /**
     * 报警描述
     */
    private String alarmDesc;

    /**
     * 故障描述
     */
    private String recordDescr;

    /**
     * 原因分析
     */
    private String reason;

    /**
     * 解决办法
     */
    private String solution;

    /**
     * 备注
     */
    private String remark;

    /**
     * 换件记录
     */
    private List<RepairReplacementRecord> consumeList;

}
